Index: sys/netipsec/xform_esp.c
===================================================================
RCS file: /usr/ncvs/src/sys/netipsec/xform_esp.c,v
retrieving revision 1.11
diff -u -r1.11 xform_esp.c
--- sys/netipsec/xform_esp.c	15 Mar 2006 21:11:11 -0000	1.11
+++ sys/netipsec/xform_esp.c	19 Mar 2006 17:20:07 -0000
@@ -555,6 +555,23 @@
 	 */
 	m->m_flags |= M_DECRYPTED;
 
+	/*
+	 * Update replay sequence number, if appropriate.
+	 */
+	if (sav->replay) {
+		u_int32_t seq;
+
+		m_copydata(m, skip + offsetof(struct newesp, esp_seq),
+			   sizeof (seq), (caddr_t) &seq);
+		if (ipsec_updatereplay(ntohl(seq), sav)) {
+			DPRINTF(("%s: packet replay check for %s\n", __func__,
+			    ipsec_logsastr(sav)));
+			espstat.esps_replay++;
+			error = ENOBUFS;
+			goto bad;
+		}
+	}
+
 	/* Determine the ESP header length */
 	if (sav->flags & SADB_X_EXT_OLD)
 		hlen = sizeof (struct esp) + sav->ivlen;
